function[Y,X,X_full,Q,Q_new,Xoriginal]=transform(Z)
small=1.0e-06;
[T1 N]=size(Z);
T=T1-2; %%% As the first two rows are tcode and slowcode
Y=Z;
X=zeros(T,1);

%Transform to level or log
for ll=1:N
if  Y(2,ll)== 1 || Y(2,ll)==2 || Y(2,ll)==3
    X(1:T,ll)=Y(3:T1,ll);                               
    
elseif Y(2,ll)== 4 || Y(2,ll)==5 || Y(2,ll)==6
    if min(Y(3:T1,ll)) < small
        X(1:T,ll)=NaN; 
    end
    Y(3:T1,ll)=100*log(Y(3:T1,ll));
    X(1:T,ll)=Y(3:T1,ll);                               
end     
end
X_full=[Z(1:2,:); X];
Q=zeros(T,1);
%Transformation Q to Stationary
for ll=1:N
if  X_full(2,ll)== 1 || X_full(2,ll)== 4
    Q(1:T,ll)=X_full(3:T1,ll);                               
    
elseif X_full(2,ll) == 2 || X_full(2,ll) == 5
    Q(2:T,ll)=(X_full(4:T1,ll)-X_full(3:T1-1,ll));                 
    
elseif X_full(2,ll)== 3 || X_full(2,ll)== 6
    Q(3:T,ll)=(X_full(5:T1,ll)-2*X_full(4:T1-1,ll)+X_full(3:T1-2,ll));   
    
end
end  %%%% Q standarized stationary data
Q_new=Q(3:end,:);
Xoriginal=X;
X=X(3:end,:);
end